#Region " Imports "

Imports System.Data

#End Region

Partial Class Usercontrols_Admin_Users
    Inherits UserControlBase

#Region " Enums, Memebers and Properties "

    Private DataPageLocal As New PagedDataSource
	Protected m_UserName As String

	Protected PU As New ProfileUtility

	Public Property sortCriteria() As String
		Get
			Return CStr(ViewState("sortCriteria"))
		End Get

		Set(ByVal Value As String)
			ViewState("sortCriteria") = Value
		End Set
	End Property

	Public Property sortDir() As String
		Get
			Return CStr(ViewState("sortDir"))
		End Get

		Set(ByVal Value As String)
			ViewState("sortDir") = Value
		End Set
	End Property

#End Region

#Region " Page Events "

	Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
		Me.MessageLabel = Me.uxMessagesLabel
	End Sub

	Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

		SetPageTitle("User Management")

		If IsUserAuthenticated = True Then
			If Me.Page.IsPostBack = False Then
				LoadPage()
			End If

			ConfigBaseNavCtrls()

			If Me.Page.IsPostBack = False Then

				'Set Default Sort Order and Direction
				Me.sortCriteria = "username"
				Me.sortDir = "asc"

				BindDataItems()
			End If
		End If

		Me.uxAdminPanel.Visible = ShowControls(SecurityMask.Admin, True)

	End Sub

#End Region

#Region " Save Data "



#End Region

#Region " Load Data "

	Private Sub LoadPage()
		LoadPageSize(Me.uxPageSizeDropDownList)
	End Sub

	Public Overloads Overrides Sub BindDataItems()
		Dim MU As New MembershipUtility
		Dim DS As New DataSet
		Dim DT As New DataTable
		Dim DV As New DataView

		DS = MU.GetAllUsers

		Me.RecordCount = DS.Tables(0).Rows.Count

		DT = DS.Tables(0)

		DV.Table = DT

		DV.Sort = Me.sortCriteria & " " & Me.sortDir

		Me.DataPage.DataSource = DV
		Me.DataPage.AllowPaging = True
		Me.DataPage.PageSize = CType(Me.uxPageSizeDropDownList.SelectedValue.ToString, Integer)
		Me.DataPage.CurrentPageIndex = Me.PageNumber

		CreatePagingLinks()

		With Me.uxResultsGridView
			.DataSource = Me.DataPage
			.PageSize = Me.DataPage.PageSize
			.DataBind()
		End With

	End Sub

#End Region

#Region " Form Controls Events "

	Protected Sub uxResultsGridView_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles uxResultsGridView.Sorting
		'Get the Sort by Value from the Sortexpression field on the column
		If Me.sortCriteria = e.SortExpression Then
			If Me.sortDir = "desc" Then
				Me.sortDir = "asc"
			Else
				Me.sortDir = "desc"
			End If
		End If

		' Assign the column clicked to the sortCriteria property
		Me.sortCriteria = e.SortExpression

		'Calls the function to rebuild the datagrid view, with the new sort order
		BindDataItems()
	End Sub

	Protected Sub EmailUser(ByVal sender As Object, ByVal e As CommandEventArgs)

		m_UserName = e.CommandArgument.ToString.Trim

		If UseClientEmail = True Then
			SendMailUsingClient(Membership.GetUser(m_UserName).Email.ToString, "", "")
		Else
			ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "email", "fPopUpWin('" & String.Format("{0}.aspx?pid=msg_email&popup=1&userid={1}", AppPage, Replace(m_UserName, "\", "\\")) & "','email',0 , 1, 1,800,600, 0);", True)
		End If
	End Sub

	Protected Sub DeleteUser(ByVal sender As Object, ByVal e As CommandEventArgs)
		Dim MU As New MembershipUtility

		MU.DeleteUser(e.CommandArgument.ToString.Trim)

		BindDataItems()

	End Sub

#End Region

#Region " Helpers and Methods "

    Private Sub ConfigBaseNavCtrls()

        Me.PagingTopPanel = Me.uxPagingTopPanel
        Me.PagingBottomPanel = Me.uxPagingBottomPanel

        Me.RepeaterTop = Me.uxPagesTopRepeater
        Me.RepeaterBottom = Me.uxPagesBottomRepeater

        Me.NextTopLinkButton = Me.uxTopNextLinkButton
        Me.PreviousTopLinkButton = Me.uxTopPrevLinkButton
        Me.NextBottomLinkButton = Me.uxBottomNextLinkButton
        Me.PreviousBottomLinkButton = Me.uxBottomPrevLinkButton

        Me.DataPage = DataPageLocal
        Me.PageSize = CType(Me.uxPageSizeDropDownList.SelectedValue.ToString, Integer)
        Me.PagesToDisplay = 10

        Me.ItemsPerPageDropDown = Me.uxPageSizeDropDownList
        Me.ItemsPerPageLabel = Me.uxItemsPerPageLabel
        Me.PagerInfoLabel = Me.uxPagerInfoLabel

        AddHandler Me.RepeaterTop.ItemCommand, AddressOf PagingRepeater_ItemCommand
        AddHandler Me.RepeaterBottom.ItemCommand, AddressOf PagingRepeater_ItemCommand

    End Sub

#End Region

End Class
